-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
BalancerV3: SwapAdapter and Substreams #126
base: main
Are you sure you want to change the base?
Conversation
|
GitGuardian id | GitGuardian status | Secret | Commit | Filename | |
---|---|---|---|---|---|
14904727 | Triggered | Generic High Entropy Secret | 73aec62 | evm/test/BalancerV3SwapAdapter.t.sol | View secret |
14904728 | Triggered | Generic High Entropy Secret | 73aec62 | evm/test/BalancerV3SwapAdapter.t.sol | View secret |
14904729 | Triggered | Generic High Entropy Secret | 73aec62 | evm/test/BalancerV3SwapAdapter.t.sol | View secret |
🛠 Guidelines to remediate hardcoded secrets
- Understand the implications of revoking this secret by investigating where it is used in your code.
- Replace and store your secrets safely. Learn here the best practices.
- Revoke and rotate these secrets.
- If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.
To avoid such incidents in the future consider
- following these best practices for managing and storing secrets including API keys and other credentials
- install secret detection on pre-commit to catch secret before it leaves your machine and ease remediation.
🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.
initialized_accounts: | ||
- "0xbA1333333333a1BA1108E8412f11850A5C319bA9" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this the vault contract? Could you please add a comment here describing why this is necessary?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added comment in 302d458
45eebca
to
957f4ed
Compare
db617f7
to
8dbc3cb
Compare
add_change_if_accounted(&mut reserves_of, change, token.as_slice()); | ||
} | ||
} | ||
if let Some(SendTo { token, .. }) = SendTo::match_and_decode(call) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What happens if in the same TX the user calls SendTo and then Settle? We'd keep the final value? Also, are you sure that these are the only OPs that can alter a vault's balance?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SendTo requires the vault to be unlocked. Doesn't it also require settle
to be called in the end? If so, this call check would be redundant, but I'm not 100% sure it is a requirement
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
are you sure that these are the only OPs that can alter a vault's balance?
Yes there are only 3 instances in where the _reservesOf
storage mapping is being set:
settle
sendTo
erc4626WrapOrUnwrapBuffer
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SendTo requires the vault to be unlocked. Doesn't it also require settle to be called in the end?
There are instances wheresettle
andsendTo
can be invoked in the same TX, this is the case with multi steps path in theBatchRouter.sol
contract.
There are also instances wheresendTo
is invoked without asettle
after (in theRemoveLiquidityHook
for example).
The observation made however is valid: In case the storage slot for token_addr
is settled twice there will be 2 corresponding token_balance
messages.
W should keep the latest and most updated value according to the call order of invokation in the tx. And I have updated the HashMap
insertion logic to accomodate for that.
Vault contract tokenBalance message are set according to the vault storage changes in the `_reserveOf` storage variable VaultStorage.sol contract This was the culprit that caused the failure in simulation since balancer enforces the invariant that `token.balanceOf(vault_addr) == _reservesOf[token]`
9c625cf
to
6a49063
Compare
SSIA